package solitaire.controle;

import javax.swing.JFrame;

import solitaire.application.Carte;
import solitaire.application.TasDeCartesColorees;
import solitaire.presentation.PTasDeCartesColorees;

/**
 * Controlleur du tas de cartes color&eacute;es, faisant le lien entre le mod&egrave;le du tas de cartes color&eacute;es et sa pr&eacute;sentation.
 * Les op&eacute;rations du mod&egrave;le sont surcharg&eacute;es pour y ajouter la mise &agrave; de la pr&eacute;sentation.
 * 
 * @author Andr&eacute; Simon, J&eacute;r&eacute;my Brault
 *
 */
public class CTasDeCartesColorees extends TasDeCartesColorees {

	private PTasDeCartesColorees presentation;
	
	/**
	 * Constructeur du controlleur de tas de cartes color&eacute;es qui construit un tas de cartes color&eacute;es, puis sa pr&eacute;sentation.
	 *
	 * @see TasDeCartesColorees#TasDeCartesColorees(String, int, solitaire.application.Usine)
	 */
	public CTasDeCartesColorees(String nom, int couleur, CUsine usine) {
		super(nom, couleur, usine);
		presentation = new PTasDeCartesColorees(this);
	}

	@Override
	public void empiler(Carte carte) {
		if(isEmpilable(carte)) {
			presentation.empiler(((CCarte)carte).getPresentation());
			super.empiler(carte);
		}
	}

	@Override
	public void depiler() throws Exception {
		if(!isVide()) {
			presentation.depiler(((CCarte)getSommet()).getPresentation());
			super.depiler();
		}
	}
	
	/**
	 * @return {@link PTasDeCartesColorees} la pr&eacute;sentation du tas de cartes color&eacute;es
	 */
	public PTasDeCartesColorees getPresentation() {
		return presentation;
	}
	
	public static void main(String[] args) {
		JFrame fenetre = new JFrame("Test CTasDeCartesColorees");
		
		CCarte roiCoeur = new CCarte(13, 3);
		CCarte damePique = new CCarte(12, 2);
		CCarte valetCareaux = new CCarte(11, 1);
		CCarte dixTrefle = new CCarte(10, 4);
		CCarte asPique = new CCarte(1, 2);
		CCarte troisPique = new CCarte(3, 2);
		CCarte deuxPique = new CCarte(2, 2);
		roiCoeur.setFaceVisible(true);
		damePique.setFaceVisible(true);
		valetCareaux.setFaceVisible(true);
		dixTrefle.setFaceVisible(false);
		
		CUsine usine = new CUsine();
		
		CTasDeCartesColorees tas = new CTasDeCartesColorees("CTasDeCartesColorees", 2, usine);
		tas.empiler(roiCoeur);
		tas.empiler(damePique);
		tas.empiler(valetCareaux);
		tas.empiler(dixTrefle);
		tas.empiler(asPique);
		tas.empiler(troisPique);
		tas.empiler(deuxPique);
		tas.empiler(troisPique);
		
		fenetre.getContentPane().add(tas.getPresentation());
		fenetre.setVisible(true);
		fenetre.setBounds(100, 100, 300, 300);
		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}
